1,日常中数字的个数是没有个数的,但在计算机中不是的,在计算机中储存个数是一定
一旦超出便会舍弃。
2,在四位宽度的计算机中,也就是计算机只能储存二进制的四位(0000 1111)
8 | 7 |
9 | 6 |
a | 5 |
b | 4 |
c | 3 |
d | 2 |
e | 1 |
f | 0 |
若是有符号位则分为(0000到0111)和(1110到1111)即若是无符号为 0000 1111(0~15)
0000 | 0001 | 0010 | 0011 | 0100 | 0101 | 0110 | 0111 | 1000 | 1001 | 1010 | 1011 | 1100 | 1101 | 1110 | 1111 |
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | -8 | -7 | -6 | -5 | -4 | -3 | -2 | -1 |
3,在八位宽度的计算机中,也就是计算机只能储存二进制的八位(0 到FF)
80 | 7f |
。。。 | 。。。 |
。。。 | 。。。 |
ff | 0 |
若是有符号位则分为(0到7f)和(80到ff)即若是无符号为 0 ff(0~255)
0 | 1 | ... | 7f | 80 | 81 | ... | ff |
0 | 1 | ... | 128 | -128 | -127 | ... | -1 |
4,在我们实际生活中常用到的为X32位和X64位比较多
同理32位无符号为是(0到ffffffff)有符号为分为(0到7fffffff)和(8000到ffffffff)
5,计算机运算问题,首先需要明白计算机是不会加减乘除的他只会位运算即 或 非 与 异或
或运算(|) |
即两个均为零时才为零,有一个唯一都为1 01101001 01100110 |—————————— 01101111 |
与运算(&) |
两个相同才为一 01101001 01100110 &—————————— 11110000 |
非运算(~) |
零变为一,一变为零(非运算只需一个值) 01010101 ~—————————— 10101010 |
异或运算(^) |
只有两个不同时才为一 01101001 01100110 ^ —————————— 00001111 |
6,明白以上位运算以后便可以知晓计算机是如何做加减乘除的啦
举个例子 9+10=19
第一步转成二进制 | 00001001 00001010 |
第二部进行异或运算 |
00001001 00001010 ^—————— 00000011 保存 R(00000011) |
进行与运算 判断是否全为零 是进行转进制输出R 否进行移位符左移 <<一位 |
00001001 00001010 &————— 00001000 ——>00010000保存T(00010000) |
再次进行异或运算 |
00000011 00010000 ^—————— 00010011 (R与T的异或) |
进行与运算 判断是否全为零 是进行转进制输出R 否进行移位符左移 <<一位 |
00000011 00010000 &—————— 00010011 (R与T的与) |
结束 | 00010011——>19 |
7,会了加法减法不就是手到擒来吗?至于乘除无非就是多加几次的问题,反正计算机不是你,
又没有小情需。
8,在我们正常情况下,我们会遇到一些求第几位是什莫的问题(在二进制中)这个若我们在
用小本本写就太拉跨了,既然我们学了位运算那岂不是可以有更好的方法那,这个是当然有的
很简单我们只需要一个与运算就能解决。
一个7fa的 第7位举例 |
7fa ——>0011111111010 0011111111010 000010000000(求第几位第几位就唯一) &—————————— 000010000000 👈那么第七位就为一 |
9,就以上位运算也诞生了最简单加密方式即通过位运算加密
加密 一串数字 5484 | 5484——>0101 0100 1000 0100 |
密匙 4 (密匙为一个数字 所以加密也为一个一个加密) |
4——>0100 0101 0100 1000 0100 0100 0100 0100 0100 ^—————————————— 0001 0000 1100 0000 👈1120 |
输出结果 | 1120 或 0001 0000 1100 0000 |
当然要解密只需通过密匙在进行一次异或即可
密文 0001 0000 1100 0000 | 4——>0100 |
密匙 4 |
0001 0000 1100 0000 0100 0100 0100 0100 ^—————————————— 0101 0100 1000 0100 👈5484 |
结果 | 0101 0100 1000 0100 👈5484 |