ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

二进制算法题

2022-01-09 10:04:24  阅读:240  来源: 互联网

标签:11111111 二进制 补码 负数 00000000 算法 原码


1、怎么判断一个存储在计算机中的二进制是正数还是负数

参考:https://jingyan.baidu.com/article/fedf0737b29e7535ad89775d.html

要清楚是以有符号进行存储还是无符号进行存储。

(1)、 如果是无符号存储,则其为一个正数。

(2)、若是有符号存储,则为补码存储。

(补码存储)需要看其最高位,最高位为0,为正数; 反之,为负数。

(3)、 如果仅仅是给了一堆二进制:比如10101010,那么它是没有正负概念的。

或者说10101010是原码或者补码,进而推断它的原始的值。

2、原码、反码、补码

参考:负数的二进制表示_storm_fury-CSDN博客_负数的二进制表示

计算机中存储数据都是以补码存储的

正数的原码、反码、补码一样

负数的补码为对该数的原码取反,然后在最后一位加1

(1)、原码:

一个正数的原码,是按照绝对值大小转换成的二进制数;
一个负数的原码,是按照绝对值大小转换成的二进制数,然后最高位补1。

比如 :
00000000 00000000 00000000 00000101是 5的 原码。
10000000 00000000 00000000 00000101是 -5的 原码。

(2)、反码:
正数的反码与原码相同,负数的反码为对该数的原码除符号位外各位取反。

比如:
正数00000000 00000000 00000000 00000101的反码还是00000000 00000000 00000000 00000101
负数10000000 00000000 00000000 00000101每一位取反(除符号位),得11111111 11111111 11111111 11111010。

(3)、补码:
正数的补码与原码相同;
负数的补码为对该数的原码除符号位外各位取反,然后在最后一位加1.
比如:
10000000 00000000 00000000 00000101的反码是:11111111 11111111 11111111 11111010。
那么,补码为:
11111111 11111111 11111111 11111010 + 1 = 11111111 11111111 11111111 11111011

3、二进制的操作

与、或、异或、左移、右移

在不溢出的情况下

左移n位后的值 等于原值乘以2的n次方

例如 4 <<2 就是16,二进制就是 00000100 <<00010000

-4<<2 就是-16  二进制就是 11111100(负数在计算机中是以补码存在的) <<11110000,其中11110000是补码,想要知道它是多少需要先减一再取反(除符号位),减一是11101111,取反是10010000,所以是-16。

右移n位后的值 等于原值除以2的n次方的商

例如 4 >>2 就是1,二进制就是 00000100 >>00000001

-4>>2 就是-1  二进制就是 11111100 <<11111111,减一是11111110,取反是10000001,所以是-1。

4、编程题:

(1)、剑指offer面试题10:一个整数的二进制中1的个数:将整数的二进制表达的数每一位和1进行&运算,然后为例避免负数右移都是1的死循环情况,将1这个数字左移循环进行&运算。

(2)、剑指offer面试题40:数组中只出现一次的数字:

(3)、10进制转3进制:

标签:11111111,二进制,补码,负数,00000000,算法,原码
来源: https://blog.csdn.net/xuehuagongzi000/article/details/122387781

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有