unsigned

数据压缩第一次作业

一曲冷凌霜 提交于 2020-02-20 12:37:08
总结归纳计算机编程中的各种数据类型,其表示形式和计算方法。重点关注类型转换、数值溢出和移位等操作。 数据类型: 整型: (signed) int 4字节 范围:-2147483648~+2147483647 unsigned int 4字节 范围:0~+4294967295 (signed) short int 2字节 范围:-32768~+32767 unsigned short int 2字节 范围:0~+65535 (signed) long int 8字节 范围:-9223372036854775808~+9223372036854775807 unsigned long int 8字节 范围:0~+18446744073709551615 浮点型: float 4字节 范围:-3.4×10^(38) ~ 3.4×10^(38) double 8字节 范围:-1.7×10^(308) ~ 1.7×10^(308) long double 16字节 字符型: (signed) char 1字节 范围:-128~+127 Unsigned char 1字节 范围:0~+255 浮点型转换为整型:int a=1; float b=(float)a; 整型转换为浮点型:float a=1.5; int b=(int)a; 整型转换为字符型:int a=1; char b=(char

9.17键盘的操作

吃可爱长大的小学妹 提交于 2020-02-19 10:14:36
键盘的应用和分类: 键盘分为编码键盘和非编码键盘,键盘上闭合键的识别是由专门的硬件编码器实现,并产生键编码号或者是键值的成为编码键盘,如计算机的键盘 靠软件编程来识别的称为非编码键盘; 在单片机组成的各种系统中,用的最多的是非编码键盘,也有用到编码键盘的 非编码键盘又有独立键盘和矩阵键盘。 要先像键盘里面先写1;在读取操作 示例代码: #include<reg52.h> #define uint unsigned int #define uchar unsigned char sbit ld1 = P1^0; sbit key1 = P3^4; sbit dula = P2^6; sbit wela = P2^7; uchar num; uchar code table[]={0x3f,0x06,0x5b,0x4f, 0x66,0x6d,0x7d,0x07, 0x7f,0x6f,0x77,0x7c, 0x39,0x5e,0x79,0x71}; void display(num); main() { P3 = 0xff; while(1) { display(num); if(key1==0) { ld1 = 0; num++; if(num==10) num = 0; while(key1!=1);//松手检测 } else ld1 = 1; } } void display

井字游戏代码

我们两清 提交于 2020-02-17 15:05:44
#include<stdio.h> #include<stdlib.h> #include<stdbool.h> int main() { unsigned int player = 0; unsigned int xia = 0; bool winner = 0; unsigned int row = 0; unsigned column = 0; //定义棋子 char qizi[3][3] = { {‘1’,‘2’,‘3’},{‘4’,‘5’,‘6’},{‘7’,‘8’,‘9’} }; for (unsigned int i = 0; i < 9 && winner == 0; ++i) { //1,设定选手号 player = i % 2 + 1; //2,打印棋局,选手下棋,下的不对继续下,并检验赢家 do { printf(" %c | %c | %c \n", qizi[0][0], qizi[0][1], qizi[0][2]); printf("---+---+---\n"); printf(" %c | %c | %c \n", qizi[1][0], qizi[1][1], qizi[1][2]); printf("---+---+---\n"); printf(" %c | %c | %c \n", qizi[2][0], qizi[2][1], qizi

SAM4E单片机之旅——1、LED闪烁之空循环

和自甴很熟 提交于 2020-02-17 13:22:57
最近因为导师要写一本关于SAME4单片机的书籍,而我也作为一个嵌入式的初学者看了这本书。现在也让我写写几个小的程序,做做示例。既然写了文档之类的,就发到博客上来吧。 目前关于这芯片能参考的书籍大概就只有英文手册了。用的板子是 SAM4E16E。 IDE用的是Atmel Studio。既然是学习单片机,就没有使用asf框架,而是直接采用访问寄存器的方法了。 第一个程序就是控制板子上一个LED灯的闪烁了。 一、电路 通过查看电路图,可以发现有一个蓝色的LED灯连接在PA0引脚上。我们可以通过改变PA0输出的电平实现LED灯的闪烁。 二、寄存器的访问和CMSIS 对单片机的操作需要通过对相关寄存器的访问来实现。比如,为调节PA0引脚上的电平,首先我们需要允许PIOA控制PA0引脚。通过查看寄存器说明可知,这只要向相应的PIO使能寄存器(PIO_PER)写入0x01就可以了。同时,也可以查到PIOA的PIO_PER被映射到地址0x400E0E00上了。所以通过如下代码就可以达到目的: /* 假设 unsigned int长度为32位 */ unsigned int* PIOA_PER_p = (unsigned int*)0x400E0E00u; (*PIOA_PER_p) = 0x01; 这样做非常繁琐,而且我们也不能保证unsigned int总是32位长。

(一) 编程常用数据类型

∥☆過路亽.° 提交于 2020-02-17 10:29:58
1.整数 这是一种整数型数据变量,在各种语言中都有广泛的应用,存储方式为二进制补码。一般长度为四个字节。根据具体数据的取值范围,还可分为长整型long(4byte),整型int(4byte),短整型short(2byte)等。根据有无符号有signed int, unsigned int。 整形的计算方法有数学运算与逻辑运算,其中值得一提的是一些语言中(如C语言),当你定义了某变量数据类型为整型后,若赋值的是非整数类型,计算机会自动转为整数类型存储,但在不用定义变量的python中则不会有这种问题。 作为二进制补码形式存储的整型可进行左移,右移,与,或,非,与或,或非等运算操作。 左移里一个比较特殊的情况是当左移的位数超过该数值类型的最大位数时,编译器会用左移的位数去模类型的最大位数,然后按余数进行移位。当最左边为符号位时,左移显然会形成数据的溢出。 相同情况下,右移不会改变符号位。 实际应用中,可用左移右移作快速的乘除运算。 2.浮点数 也是一种非常常用的数据类型。根据长度不同可分为float(4byte),double(8byte),long double(8byte),为浮点形式存储。 涉及的计算为有小数的数学运算与逻辑运算。 3.字符 char 占用一个字节空间,存储方式为二进制补码,也可分为signed char 和 unsigned char

android-partition分析

帅比萌擦擦* 提交于 2020-02-17 10:22:43
转载请注明来源: cuixiaolei的技术博客 这里讲下android的分区。 具体的使用在另一片文章中介绍 ,这里只是把它拿出来介绍。 android的存储分为两种   一种叫做RAM,如emmc标准的ddr3/4,容量比较小   一种叫做ROM,rom大小比较大,如8G/16G/32G/64G/128G。 我们给手机刷机,是把system.img/recovery.img/userdata.img等按照分区表烧写在对应地址的ROM上,这部分叫系统部分,如16G的手机,开机后只有11G,其中5G被这些分区占据了,用户能使用的存储大小为11G。 我们在bootloader阶段会从boot/recovery分区中读取kernel/ramdisk到ram上,然后引导kernel,加载虚拟文件系统ramdisk,启动init,然后读取rom中的文件系统的内容。 在boot.img/recovery.img的内容如下,bootloader会从boot header得到kernel/ramdisk/second/device的大小和要加载到ram上的地址,读取aboot/recovery分区的内容到ram上。 recovery.img/boot.img的构成是一样的,只是里面文件的大小和信息不同,文件名是一样的。 分析boot_img_hdr结构提  kernel_size 

计算机编程的各种数据类型及相关用法总结

╄→尐↘猪︶ㄣ 提交于 2020-02-17 01:42:29
总结归纳计算机编程中的各种数据类型,其表示形式和计算方法。重点关注类型转换、数值溢出和移位等操作。 数据类型 1.数字类型1.1 整数型(int)定义方式:如,phone_num=1371828137方法:加减乘除,地板除,取整,取余1.2 浮点型(float) 2.字符串类型(str)定义方式:在单引号,双引号,三单/双引号之间,但三单/双引号字符串可以换行 3.列表类型(list)定义:在[]中存任何数据类型的元素,这些元素以逗号隔开 4.字典类型(dict)定义方式:{}中以key:value的形式存储数据,key一般用来描述value的意义,所以key一般是字符串,但它可以是不可变数据类型;value可以是任何数据类型,以逗号隔开key:value 5.布尔类型(bool)定义:Ture/False注:0、None、空(空字符串,空列表,空字典),False的bool值为False。 6.用户交互 7.格式化输出 参考文献:https://www.cnblogs.com/bruce123/p/10796793.html 计算机中的类型转换在不同的编程系统中呈现不同,以下以C++为例进行说明: 一、在c++中的数据类型转换一般有以下几种情况: 1、将一种算术类型的值赋给另一种算术类型的变量时,c++将对值进行转换 2、表达式中包含不同的类型时,c++将对值进行转换 3

使用librtmp进行H264与AAC直播

…衆ロ難τιáo~ 提交于 2020-02-15 13:26:33
libx264 版本是 128 libfaac 版本是 1.28 1、帧的划分 1.1 H.264 帧 对于 H.264 而言每帧的 界定符 为 00 00 00 01 或者 00 00 01 。 比如下面的 h264 文件片断这就包含三帧数据: 第一帧是 00 00 00 01 67 42 C0 28 DA 01 E0 08 9F 96 10 00 00 03 00 10 00 00 03 01 48 F1 83 2A 第二帧是 00 00 00 01 68 CE 3C 80 第三帧是 00 00 01 06 05 FF FF 5D DC 45 E9 BD E6 D9 48 B7 96 2C D8 20 D9 23 EE EF .. 帧类型有: NAL_SLICE = 1 NAL_SLICE_DPA = 2 NAL_SLICE_DPB = 3 NAL_SLICE_DPC = 4 NAL_SLICE_IDR = 5 NAL_SEI = 6 NAL_SPS = 7 NAL_PPS = 8 NAL_AUD = 9 NAL_FILLER = 12, 我们发送 RTMP 数据时只需要知道四种帧类型,其它类型我都把它规类成非关键帧。分别是 NAL_SPS(7), sps 帧 NAL_PPS(8), pps 帧 NAL_SLICE_IDR(5), 关键帧 NAL_SLICE(1) 非关键帧

ANTsPy医学图像配准

与世无争的帅哥 提交于 2020-02-14 18:02:57
ANTsPy主页: https://github.com/ANTsX/ANTsPy ANTsPy官方文档: https://antspyx.readthedocs.io/_/downloads/en/latest/pdf/ 配准ants.registration() import os import ants import numpy as np import time fix_path = 'img_fix.png' move_path = 'img_move.png' # 配准所使用的各种方法 各方法耗时:https://www.cnblogs.com/JunzhaoLiang/p/12308200.html types = ['Translation', 'Rigid', 'Similarity', 'QuickRigid', 'DenseRigid', 'BOLDRigid', 'Affine', 'AffineFast', 'BOLDAffine', 'TRSAA', 'ElasticSyN', 'SyN', 'SyNRA', 'SyNOnly', 'SyNCC', 'SyNabp', 'SyNBold', 'SyNBoldAff', 'SyNAggro', 'TVMSQ'] # 保存为png只支持unsigned char & unsigned short

利用结构体观察浮点数

被刻印的时光 ゝ 提交于 2020-02-14 11:14:11
利用结构体定义位域,可以观察浮点数内部是如何存储的,看代码: #include<cstdio> using namespace std; struct fp{ unsigned fraction:23; unsigned exponent:8; unsigned sign:1; }; int main(){ float a=0.1; fp *p=(fp*)&a; printf("%d\n",p->sign); printf("%d\n",p->exponent-127); printf("%d\n",p->fraction); return 0; } 位域在本质上就是一种结构类型, 不过其成员是按二进位分配的。关于位域的几点说明: 1、位域以二进制位来存储数据,可以在冒号左边是位域名,冒号右边是位域的长度。 2、位域按定义顺序存储,记住是从存储变量的个位,也就是最右边开始的。 3、一个位域必须存储在同一个字节中,不能跨两个字节。如一个字节所剩空间不够存放另一位域时,应从下一单元起存放该位域。也可以有意使某位域从下一单元开始。 4、来确定结构体类型的成员变量的值所占的字位数,如果在实际应用中,该变量的值超出了在声明它时所声明的字位数,那么溢出的部分将会丢失。 struct bs { unsigned a:4 unsigned :0 /*空域*/ unsigned b:4 /